package com.jinke.api.modules.app.util;

import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.teautil.models.RuntimeOptions;
import com.jinke.api.common.constant.TASMSConstants;
import lombok.extern.slf4j.Slf4j;

/**
 * 老版本阿里发短信
 *
 * @author jipengfei
 */
@Slf4j
public class SmsUtil {


    /**
     * 使用AK&SK初始化账号Client
     *
     * @param
     * @param
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.dysmsapi20170525.Client createClient() throws Exception {
        // 工程代码泄露可能会导致 AccessKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        // 建议使用更安全的 STS 方式，更多鉴权访问方式请参见：https://help.aliyun.com/document_detail/378657.html。
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
                .setAccessKeyId("LTAI5t7KeQS7J8DnTLBZd4iF")
                // 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                .setAccessKeySecret("05H9lbiZiUSU1piRnJukRfwizoKzFs");
        // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
        config.endpoint = "dysmsapi.aliyuncs.com";
        return new com.aliyun.dysmsapi20170525.Client(config);
    }


    public static boolean sendSms(String phone, String codeStr) {
        String code = "{\"" + "code" + "\"" + ":\"" + codeStr + "\"}";

        String templateCode = "SMS_296005699";
        String signName = TASMSConstants.SIGN_NAME;
        // 非中国地区
        if (!phone.startsWith("+86") && !phone.startsWith("86")) {
            templateCode = "SMS_465369480";
            signName = "ShipCheap";
        }

        //

        com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
                .setTemplateCode(templateCode)
                .setTemplateParam(code)
                .setPhoneNumbers(phone)
                .setSignName(signName);
        try {
            // 复制代码运行请自行打印 API
            com.aliyun.dysmsapi20170525.Client client = SmsUtil.createClient();
            SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, new RuntimeOptions());
            return sendSmsResponse.getStatusCode() == 200;
        } catch (TeaException error) {
            // 此处仅做打印展示，请谨慎对待异常处理，在工程项目中切勿直接忽略异常。
            // 错误 message
             log.error("发送短信出错"+error.getMessage());
            // 诊断地址
            Object recommend = error.getData().get("Recommend");
            System.out.println(recommend);
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 此处仅做打印展示，请谨慎对待异常处理，在工程项目中切勿直接忽略异常。
            // 错误 message
            log.error("发送短信出错"+error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
        return false;
    }

    public static void main(String[] args_) throws Exception {
        boolean b = sendSms("+8613638628989", "123456");
        System.out.println(b);
    }
}
